@echo off
title 跨网络数据传输服务器 - 阿里云ECS快速部署

echo ==========================================
echo   跨网络数据传输服务器 - 阿里云ECS部署
echo ==========================================
echo.

echo 🎯 部署目标: 
echo    将带数据持久化功能的WebSocket服务器部署到阿里云ECS
echo    支持24/7稳定运行和跨网络环境数据传输
echo.

echo 📋 准备工作检查:
echo    ✅ cross_network_server.py (已优化，支持数据持久化)
echo    ✅ deploy_cross_network_server.sh (专用部署脚本)
echo    ✅ requirements.txt (依赖文件)
echo.

echo 🔧 推荐ECS配置:
echo    - 实例规格: 2核4GB内存 (ecs.g6.large)
echo    - 操作系统: Ubuntu 20.04 LTS
echo    - 带宽: 5Mbps以上
echo    - 存储: 40GB系统盘
echo    - 安全组: 开放端口 22, 80, 443, 8085
echo.

echo 💰 预估成本: 约80-120元/月
echo.

echo 开始部署流程...
echo.

REM 获取ECS信息
set /p ecs_ip="请输入阿里云ECS公网IP地址: "
if "%ecs_ip%"=="" (
    echo ❌ IP地址不能为空
    pause
    exit /b 1
)

echo.
echo 📡 步骤1: 测试SSH连接...
echo 正在连接到 %ecs_ip%...

REM 测试SSH连接
ssh -o ConnectTimeout=10 root@%ecs_ip% "echo 'SSH连接测试成功'" 2>nul
if %errorlevel% neq 0 (
    echo ❌ SSH连接失败
    echo.
    echo 请检查:
    echo 1. ECS实例状态是否为 "运行中"
    echo 2. 安全组是否开放22端口
    echo 3. IP地址是否正确
    echo 4. root密码是否正确
    echo.
    echo 💡 提示: 可以尝试运行 test_ssh_connection.bat 进行详细诊断
    pause
    exit /b 1
)

echo ✅ SSH连接测试成功
echo.

echo 📁 步骤2: 创建远程目录...
ssh root@%ecs_ip% "mkdir -p /root/cross_network_server"
if %errorlevel% neq 0 (
    echo ❌ 创建目录失败
    pause
    exit /b 1
)
echo ✅ 远程目录创建成功

echo.
echo 📤 步骤3: 上传服务器文件...

REM 上传主服务器文件
echo 上传 cross_network_server.py...
scp cross_network_server.py root@%ecs_ip%:/root/cross_network_server/
if %errorlevel% neq 0 (
    echo ❌ 上传服务器文件失败
    pause
    exit /b 1
)

REM 上传部署脚本
echo 上传 deploy_cross_network_server.sh...
scp deploy_cross_network_server.sh root@%ecs_ip%:/root/cross_network_server/
if %errorlevel% neq 0 (
    echo ❌ 上传部署脚本失败
    pause
    exit /b 1
)

REM 创建requirements.txt
echo 创建 requirements.txt...
echo websockets==11.0.3> temp_requirements.txt
echo asyncio>> temp_requirements.txt
scp temp_requirements.txt root@%ecs_ip%:/root/cross_network_server/requirements.txt
del temp_requirements.txt

echo ✅ 所有文件上传完成

echo.
echo 🚀 步骤4: 执行自动部署...
echo 正在ECS服务器上运行部署脚本...

REM 执行部署脚本
ssh root@%ecs_ip% "cd /root/cross_network_server && chmod +x deploy_cross_network_server.sh && bash deploy_cross_network_server.sh"

if %errorlevel% neq 0 (
    echo ❌ 部署脚本执行失败
    echo.
    echo 请检查错误信息并尝试手动部署:
    echo 1. ssh root@%ecs_ip%
    echo 2. cd /root/cross_network_server
    echo 3. bash deploy_cross_network_server.sh
    pause
    exit /b 1
)

echo.
echo 🔍 步骤5: 验证部署结果...

REM 检查服务状态
echo 检查服务状态...
ssh root@%ecs_ip% "systemctl is-active cross-network-server.service" > temp_status.txt 2>&1
set /p service_status=<temp_status.txt
del temp_status.txt

if "%service_status%"=="active" (
    echo ✅ 服务运行正常
) else (
    echo ⚠️ 服务状态: %service_status%
)

REM 检查端口监听
echo 检查端口监听...
ssh root@%ecs_ip% "netstat -tlnp | grep :8085" > nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ 端口8085监听正常
) else (
    echo ⚠️ 端口8085未监听，可能需要等待服务完全启动
)

echo.
echo 📱 步骤6: 生成Android客户端配置...

REM 生成客户端配置更新文件
echo // 更新服务器配置 > update_server_config.kt
echo object ServerConfig { >> update_server_config.kt
echo     const val WEBSOCKET_URL = "ws://%ecs_ip%:8085" >> update_server_config.kt
echo     const val HTTP_URL = "http://%ecs_ip%:8085" >> update_server_config.kt
echo     const val CONNECTION_TIMEOUT = 30000L >> update_server_config.kt
echo     const val RECONNECT_INTERVAL = 5000L >> update_server_config.kt
echo } >> update_server_config.kt

echo ✅ 客户端配置文件已生成: update_server_config.kt

echo.
echo 🎉 部署完成！
echo ==========================================
echo.
echo 📊 部署信息:
echo - ECS公网IP: %ecs_ip%
echo - WebSocket地址: ws://%ecs_ip%:8085
echo - 服务名称: cross-network-server.service
echo - 数据目录: /root/cross_network_server/server_data
echo.
echo 🔧 管理命令:
echo - 查看状态: ssh root@%ecs_ip% "systemctl status cross-network-server.service"
echo - 查看日志: ssh root@%ecs_ip% "journalctl -u cross-network-server.service -f"
echo - 重启服务: ssh root@%ecs_ip% "systemctl restart cross-network-server.service"
echo.
echo 📱 下一步操作:
echo 1. 更新Android应用中的服务器配置
echo 2. 在ServerConfig.kt中使用新的WebSocket地址
echo 3. 重新编译APK: .\gradlew assembleRelease
echo 4. 安装并测试应用连接
echo.
echo 🔍 测试连接:
echo - 运行 test_connection.py 测试WebSocket连接
echo - 在Android应用中测试实时功能
echo.
echo 💾 数据持久化特性:
echo ✅ 患者数据自动保存到JSON文件
echo ✅ 用户数据自动保存到JSON文件  
echo ✅ 通知数据自动保存到JSON文件
echo ✅ 服务重启后数据自动恢复
echo ✅ 每天凌晨2点自动备份数据
echo.
echo 🎯 恭喜！你的跨网络数据传输服务器现在24/7运行中！
echo.

REM 生成部署报告
echo 生成部署报告...
echo 跨网络数据传输服务器部署报告 > CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo ================================= >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo 部署时间: %date% %time% >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo ECS公网IP: %ecs_ip% >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo WebSocket地址: ws://%ecs_ip%:8085 >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo 服务名称: cross-network-server.service >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo 数据目录: /root/cross_network_server/server_data >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo. >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo 特性: >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo - 数据持久化支持 >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo - 跨网络环境适配 >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo - 自动监控和重启 >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo - 定时数据备份 >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo - 24/7稳定运行 >> CROSS_NETWORK_DEPLOYMENT_REPORT.txt

echo 📋 部署报告已保存: CROSS_NETWORK_DEPLOYMENT_REPORT.txt
echo.
pause